/**
 * Created by zycool on 2016/8/17.
 * 内部领用信息 - 设备管理
 */

;(function($,window,document,undefined){

    /*** 查询表单 ***/
    // 单位ID
    var $companyId = $('#JQ_companyId').select3({search:false});
    // 岗位ID
    var $postId = $('#JQ_postId').select3({search:false});
    // 领用人
    var $userId = $('#JQ_userId').select3({search:false});
    // 唯一识别码
    var $oneCode = $('#JQ_oneCode');
    // 联系电话
    var $tel = $('#JQ_tel');
    // 设备编号
    var $customNumber = $('#JQ_customNumber').select3({search:false});
    // 领用日期1
    var $lybdate = $('#JQ_lybdate');
    // 领用日期2
    var $lyedate = $('#JQ_lyedate');
    // 归还日期1
    var $ghbdate = $('#JQ_ghbdate');
    // 归还日期2
    var $ghedate = $('#JQ_ghedate');
    // 表格
    var $table_01 = $('#JQ_datatable_01').checkbox3();

    /*** 新建 & 编辑 ***/
    var $use_id = $('#JQ_use_id');
    var $companyId_edit = $('#JQ_companyId_edit').select3({search:false});
    var $postId_edit = $('#JQ_postId_edit').select3({search:false});
    var $userId_edit = $('#JQ_userId_edit').select3({search:false});
    var $startDate_edit = $('#JQ_startDate_edit');
    var $endDate_edit = $('#JQ_endDate_edit');
    var $customNumber_edit = $('#JQ_customNumber_edit').select3({search:false});
    var $remark_edit = $('#JQ_remark_edit');
    $startDate_edit.datetimepicker({
        timepicker: false,
        format: 'Y-m-d',
        scrollInput: false,
        style: 'z-index:102'
    });
    $endDate_edit.datetimepicker({
        timepicker: false,
        format: 'Y-m-d',
        scrollInput: false,
        style: 'z-index:102'
    });
    var $action_form = $('#JQ_action_form');

    /*** 初始数据项 ***/
    // 条件对象
    var filter = {
        // 查询
        getCondition: function(data){
            var filter = {};
            filter.mode = true;
            // 分页参数
            if(data){
                if (data.start == 0) {
                    filter['jsonBean.pageNum'] = 1;
                } else {
                    filter['jsonBean.pageNum'] = data.start / 10 + 1;
                }
                filter['jsonBean.pageCount'] = data.length;
            }
            // 单位
            filter.companyId = function(){
                var v  = $companyId.val();
                if(v){
                    return v;
                }
                return '';
            }();
            // 岗位
            filter.postId = function(){
                var v  = $postId.val();
                if(v){
                    return v;
                }
                return '';
            }();
            // 领用人
            filter.userId = function(){
                var v  = $userId.val();
                if(v){
                return v;
                }
                return '';
            }();
            // 唯一识别码
            filter.oneCode = function(){
                var v  = $oneCode.val();
                if(v){
                    return v;
                }
                return '';
            }();
            // 联系电话
            filter.tel = function(){
                var v  = $tel.val();
                if(v){
                    return v;
                }
                return '';
            }();
            // 设备编号
            filter.eqptEquipmentId = function(){
                var v  = $customNumber.val();
                if(v){
                    return v;
                }
                return '';
            }();
            // 领用日期1
            filter.lybdate = function(){
                var v  = $lybdate.val();
                if(v){
                    return v;
                }
                return '';
            }();
            // 领用日期2
            filter.lyedate = function(){
                var v  = $lyedate.val();
                var v2 = $lybdate.val();
                if(v){
                    if(v2){
                        if(!(Dyy.checkDateLate(v2,v))){
                            $lyedate.TIP({content:'结束日期应晚于开始日期!'});
                            filter.mode = false;
                        }else{
                            return v;
                        }
                    }else{
                        return v;
                    }
                }
                return '';
            }();
            // 归还日期1
            filter.ghbdate = function(){
                var v  = $ghbdate.val();
                if(v){
                    return v;
                }
                return '';
            }();
            // 归还日期2
            filter.ghedate = function(){
                var v  = $ghedate.val();
                var v2  = $ghbdate.val();
                if(v){
                    if(v2){
                        if(!(Dyy.checkDateLate(v2,v))){
                            $lyedate.TIP({content:'结束日期应晚于开始日期!'});
                            filter.mode = false;
                        }else{
                            return v;
                        }
                    }else{
                        return v;
                    }
                }
                return '';
            }();

            return filter;
        },
        // 新建 & 编辑
        getCondition2: function(){
            var filter = {};
            filter.mode = true;
            // ID
            filter.id = function(){
                var v  = $use_id.val();
                if(v){
                    return v;
                }
                return '';
            }();
            // 使用单位
            filter.companyId = function(){
                var v  = $companyId_edit.val();
                if(v){
                    return v;
                }
                return '';
            }();
            // 岗位
            filter.postId = function(){
                var v  = $postId_edit.val();
                if(v){
                    return v;
                }
                return '';
            }();
            // 领用人
            filter.userId = function(){
                var v  = $userId_edit.val();
                if(v){
                    return v;
                }
                return '';
            }();
            // 领用日期
            filter.startDate = function(){
                var v  = $startDate_edit.val();
                if(v){
                    return v;
                }
                return '';
            }();
            // 归还日期
            filter.endDate = function(){
                var v1  = $startDate_edit.val();
                var v2  = $endDate_edit.val();
                if(v2){
                    if(v1){
                        if(!(Dyy.checkDateLate(v1,v2))){
                            $endDate_edit.TIP({content: '归还日期应晚于领用日期!'});
                            filter.mode = false;
                        }else{
                            return v2;
                        }
                    }else{
                        return v2;
                    }
                }
                return '';
            }();
            // 设备编号
            filter.eqptEquipmentId = function(){
                var v  = $customNumber_edit.val();
                if(v){
                    return v;
                }else{
                    $customNumber_edit.element.TIP({
                        content: '设备编号不能为空!'
                    });
                    filter.mode = false;
                }
                return '';
            }();
            // 设备状态
            filter.createRemark = function(){
                var v  = $remark_edit.val();
                if(v){
                    return v;
                }
                return '';
            }();

            return filter;
        },
        // IDARR
        getIdArr: function(){
            var arr = [];
            var $chks = $table_01.find('i.zy-checkbox');
            if($chks.length > 0){
                $chks.each(function(){
                    var $this = $(this);
                    if($this.hasClass('active')){
                        var value = $this.attr('data-id');
                        arr.push({name:'id',value:value});
                    }
                });
            }
            return arr;
        }
    };

    // 填充单位 - 筛选 & 新建 & 领用人
    DyyBase.ajax(deviceApi.url_use_company(),{},function(dataset){
        if(dataset.bool){
            var list = dataset.result;
            var json = [];
            for(var i = 0, len = list.length; i < len; i++){
                json.push({id:list[i]['id'],text:list[i]['shortName']});
            }

            // 单位 - 筛选
            $companyId.add(json);
            // 单位 - 新建
            $companyId_edit.add(json);


            // 触发单位
            $companyId.element.on('select',function(e,v,t){
                var id = v ? v : $companyId.val();
                fillPost(id,$postId,$userId);
            });
            $companyId_edit.element.on('select',function(e,v,t){
                var id = v ? v : $companyId_edit.val();
                fillPost(id,$postId_edit,$userId_edit);
            });

            // 触发岗位
            $postId.element.on('select',function(e,v,t){
                var id = v ? v : $postId.val();
                fillUser(id,$userId);
            });
            $postId_edit.element.on('select',function(e,v,t){
                var id = v ? v : $postId_edit.val();
                fillUser(id,$userId_edit);
            });

            // 填充岗位
            function fillPost(id,post,user){
                if(id){
                    // 岗位
                    DyyBase.ajax(deviceApi.url_use_postId(),{companyId:id},function(dataset){
                        if(dataset.bool){
                            var list = dataset.result;
                            var json = [];
                            for(var i = 0, len = list.length; i < len; i++){
                                json.push({id:list[i]['id'],text:list[i]['shortName']});
                            }
                            post.asset(json);
                        }
                    },{async:false});

                    // 领用人
                    var postId = post.val();
                    fillUser(postId,user);
                }
            }

            // 填充领用人
            function fillUser(id,user){
                if(id){
                    DyyBase.ajax(deviceApi.url_use_user(),{postId:id},function(dataset) {
                        if (dataset.bool) {
                            var list = dataset.result.list;
                            var json = [];
                            for (var i = 0, len = list.length; i < len; i++) {
                                json.push({id: list[i]['id'], text: list[i]['realName']});
                            }
                            user.asset(json);
                        }
                    },{async:false});
                }
            }
        }
    });

    // 填充设备编号
    DyyBase.ajax(deviceApi.url_base_list(),{},function(dataset){
        if(dataset.bool){
            var list = dataset.result.list;
            var json = [];
            for(var i = 0, len = list.length; i < len; i++){
                json.push({id:list[i]['id'],text:list[i]['customNumber']});
            }
            // 筛选 - 设备编号
            $customNumber.add(json);
            // 编辑 - 设备编号
            $customNumber_edit.add(json);
        }
    });


    // 初始加载表格
    var DT01 = $table_01.DataTable({
        'language': {
            'paginate': {
                'next': '下一页',
                'previous': '上一页'
            },
            'info': '本次检索共 _TOTAL_ 条，每页显示 10 条，共 _PAGES_ 页',
            'zeroRecords': function () {
                return '<div class="zy-datatable-empty"><p><img src="' + DyyBase.root_path + '/static/img/no_data.png"></p><h2>报告领导 没有数据~</h2><p class="c-90">去换别的查询条件吧！</p></div>';
            },
            'infoEmpty': ''
        },
        'autoWidth': false,
        'order': [],
        'serverSide': true,
        'pageLength': 10,
        'ordering': false,
        'processing': false,
        'searching': false,
        'lengthChange': false,
        'ajax': function (data, callback) {
            var param = filter.getCondition(data);
            DyyBase.ajax(deviceApi.url_use_list(), param, function (dataset) {
                var returnData = {};
                returnData.draw = data.draw;
                returnData.recordsTotal = dataset.result.total;
                returnData.recordsFiltered = dataset.result.total;
                returnData.data = DyyBase.clearNull(dataset.result.list);
                callback(returnData);
            });
        },
        'drawCallback': function () {},
        'columns': [
            {
                data: 'id', render: function (data) {
                return '<i class="zy-checkbox" data-id="'+data+'" title="选中"></i>';
            }
            },
            {
                data: 'customNumber', render: function (data) {
                return '<span title="'+data+'">'+data+'</span>';
            }
            },
            {
                data: 'modelNumber', render: function (data) {
                return '<span title="'+data+'">'+data+'</span>';
            }
            },
            {
                data: 'userName', render: function (data) {
                return '<span title="'+data+'">'+data+'</span>';
            }
            },
            {
                data: 'userPhone', render: function (data) {
                return '<span title="'+data+'">'+data+'</span>';
            }
            },
            {
                data: 'startDateStr', render: function (data) {
                return '<span title="'+data+'">'+data+'</span>';
            }
            },
            {
                data: 'endDateStr', render: function (data) {
                return '<span title="'+data+'">'+data+'</span>';
            }
            },
            {
                data: 'id', render: function (data) {
                return '<i title="编辑" class="zy-record-add-icon" data-id="'+data+'"></i>&nbsp;&nbsp;&nbsp;<i title="删除" class="zy-list-icon-delete" data-id="'+data+'"></i>';
            }
            }
        ]
    });

    // 搜索 - 查询
    $('#JQ_search_btn').click(function(){
        var param = filter.getCondition();
        if(param.mode){
            DT01.draw();
        }
    });

    // 删除
    $table_01.delegate('i.zy-list-icon-delete','click',function(){
        var $this = $(this);
        $this.MSG({
            type: 'confirm',
            content: '您确认要删除此领用信息吗?',
            yesBtnTxt: '确认',
            height: 230,
            yesBtnAct: function(){
                var id = $this.attr('data-id');
                DyyBase.ajax(deviceApi.url_use_delete(),{id:id},function(dataset){
                    if(dataset.bool){
                        $this.MSG({
                            type: 'success',
                            content: '删除成功!',
                            yesBtnAct: function(){
                                if(DT01){
                                    DT01.draw();
                                }
                            },
                            closeBtnAct: function(){
                                if(DT01){
                                    DT01.draw();
                                }
                            }
                        });
                    }
                });
            }
        });
    });

    // 批量删除
    $('#JQ_delete_btn').click(function(){
        var $this = $(this);
        var param = filter.getIdArr();
        if(param.length > 0){
            $this.MSG({
                type: 'confirm',
                height: 230,
                content: '您确认要删除选中的领用信息?',
                yesBtnTxt: '确认',
                yesBtnAct: function(){
                    DyyBase.ajax(deviceApi.url_use_delete(),param,function(dataset){
                        if(dataset.bool){
                            $this.MSG({
                                type: 'success',
                                content: '删除成功!',
                                yesBtnAct: function(){
                                    if(DT01){
                                        DT01.draw();
                                    }
                                },
                                closeBtnAct: function(){
                                    if(DT01){
                                        DT01.draw();
                                    }
                                }
                            });
                        }
                    });
                }
            });
        }else{
            $this.MSG({
                content: '请选择要删除的领用信息!'
            });
        }
    });

    // 编辑
    $table_01.delegate('i.zy-record-add-icon','click',function(){
        var $this = $(this);
        var $tr = $this.parent('td').parent('tr');
        var data = DT01.row($tr).data();
        if(data){
            // 填充数据
            $use_id.val(data.id);

            // ps: this is important
            $companyId_edit.fit(data.companyId); $companyId_edit.element.trigger('select');
            $postId_edit.fit(data.postId); $postId_edit.element.trigger('select');
            $userId_edit.fit(data.userId);

            $startDate_edit.val(data.startDateStr);
            $endDate_edit.val(data.endDateStr);
            $customNumber_edit.fit(data.eqptEquipmentId);
            console.log(data.createRemark);
            if(data.createRemark === '-'){
                $remark_edit.attr('placeholder','备注');
            }else{
                $remark_edit.val(data.createRemark);

            }

            var wind = $this.WIND({
                width: 750,
                height: 430,
                title: '编辑',
                actionBox: 'div.zy-edit-eqpt',
                yesBtnAct: function(){
                    actionEqpt(wind.clear,data);
                },
                noBtnAct: function(){
                    $action_form.reset();
                    wind.clear();
                },
                closeBtnAct: function(){
                    $action_form.reset();
                    wind.clear();
                }
            });
        }
    });

    // 新建
    $('#JQ_create_btn').click(function(){
        $(this).WIND({
            width: 750,
            height: 430,
            title: '新建',
            actionBox: 'div.zy-edit-eqpt',
            yesBtnAct: actionEqpt,
            resetForm: $action_form
        });
    });

    // 新建 / 编辑
    function actionEqpt(callback,data){
        var url, verify = $action_form.verify(), title = '';
        if(verify === true){
            if(data){
                url = deviceApi.url_use_edit();
                title = '编辑';
            }else{
                url = deviceApi.url_use_create();
                title = '新建';
            }
            var param = filter.getCondition2();
            if(param.mode){
                if(callback instanceof Function){
                    callback();
                }
                DyyBase.ajax(url,param,function(dataset){
                    if(dataset.bool){
                        $(this).MSG({
                            type: 'success',
                            content: title+'成功!',
                            yesBtnAct: function(){
                                if(DT01){
                                    DT01.draw();
                                }
                            },
                            closeBtnAct: function(){
                                if(DT01){
                                    DT01.draw();
                                }
                            }
                        });
                        $action_form.reset();
                    }else{
                        $(this).MSG({
                            type: 'error',
                            content: dataset.result,
                            yesBtnAct: function(){
                                if(DT01){
                                    DT01.draw();
                                }
                            },
                            closeBtnAct: function(){
                                if(DT01){
                                    DT01.draw();
                                }
                            }
                        });
                        $action_form.reset();
                    }
                })
            }
        }
    }

})(jQuery,window,document);